MySQL-এ একাধিক টেবিলের ডাটাকে একত্রিত করতে JOIN ব্যবহৃত হয়। JOIN এর মাধ্যমে দুটি বা ততোধিক টেবিলের মধ্যে সম্পর্ক স্থাপন করে একসাথে ডাটা রিট্রিভ করা যায়। PHP দিয়ে MySQL এর বিভিন্ন ধরনের JOIN ব্যবহার করা হয়। এখানে INNER JOIN, LEFT JOIN, RIGHT JOIN, এবং FULL JOIN এর ব্যবহার ব্যাখ্যা করা হবে।
1. INNER JOIN
INNER JOIN ব্যবহার করলে শুধুমাত্র সেই রেকর্ডগুলো রিটার্ন করা হয় যেগুলো দুটি টেবিলেই মেলানো যায়। অর্থাৎ, যেসব রেকর্ডে দুটি টেবিলের মধ্যে সম্পর্ক আছে, সেগুলোই ফেচ হবে।
1.1 INNER JOIN এর ব্যবহার
ধরি, আমাদের দুটি টেবিল রয়েছে— users এবং orders। আমরা users টেবিলের id এবং orders টেবিলের user_id এর মধ্যে সম্পর্ক স্থাপন করব।
SELECT users.id, users.name, orders.order_id, orders.product
FROM users
INNER JOIN orders ON users.id = orders.user_id;
PHP কোডে INNER JOIN ব্যবহার:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// ডাটাবেস সংযোগ
$conn = new mysqli($servername, $username, $password, $dbname);
// সংযোগ চেক করা
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// INNER JOIN কোয়েরি
$sql = "SELECT users.id, users.name, orders.order_id, orders.product
FROM users
INNER JOIN orders ON users.id = orders.user_id";
$result = $conn->query($sql);
// রেকর্ড দেখানো
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "User ID: " . $row["id"] . " - Name: " . $row["name"] . " - Order ID: " . $row["order_id"] . " - Product: " . $row["product"] . "<br>";
}
} else {
echo "No results found";
}
$conn->close();
?>
2. LEFT JOIN
LEFT JOIN (বা LEFT OUTER JOIN) ব্যবহার করলে প্রথম (বাম) টেবিলের সমস্ত রেকর্ড রিটার্ন করা হয় এবং দ্বিতীয় (ডান) টেবিলের মেলে এমন রেকর্ডগুলোর সাথে সম্পর্ক স্থাপন করা হয়। যদি ডান টেবিলের সাথে কোনো সম্পর্ক না থাকে, তবে NULL মান রিটার্ন হয়।
2.1 LEFT JOIN এর ব্যবহার
SELECT users.id, users.name, orders.order_id, orders.product
FROM users
LEFT JOIN orders ON users.id = orders.user_id;
PHP কোডে LEFT JOIN ব্যবহার:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// ডাটাবেস সংযোগ
$conn = new mysqli($servername, $username, $password, $dbname);
// সংযোগ চেক করা
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// LEFT JOIN কোয়েরি
$sql = "SELECT users.id, users.name, orders.order_id, orders.product
FROM users
LEFT JOIN orders ON users.id = orders.user_id";
$result = $conn->query($sql);
// রেকর্ড দেখানো
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "User ID: " . $row["id"] . " - Name: " . $row["name"] . " - Order ID: " . $row["order_id"] . " - Product: " . $row["product"] . "<br>";
}
} else {
echo "No results found";
}
$conn->close();
?>
3. RIGHT JOIN
RIGHT JOIN (বা RIGHT OUTER JOIN) LEFT JOIN এর বিপরীত কাজ করে। এতে, ডান (RIGHT) টেবিলের সমস্ত রেকর্ড রিটার্ন করা হয় এবং বাম (LEFT) টেবিলের সাথে সম্পর্ক স্থাপন করা হয়। যদি বাম টেবিলের সাথে সম্পর্ক না থাকে, তবে NULL মান রিটার্ন হয়।
3.1 RIGHT JOIN এর ব্যবহার
SELECT users.id, users.name, orders.order_id, orders.product
FROM users
RIGHT JOIN orders ON users.id = orders.user_id;
PHP কোডে RIGHT JOIN ব্যবহার:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// ডাটাবেস সংযোগ
$conn = new mysqli($servername, $username, $password, $dbname);
// সংযোগ চেক করা
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// RIGHT JOIN কোয়েরি
$sql = "SELECT users.id, users.name, orders.order_id, orders.product
FROM users
RIGHT JOIN orders ON users.id = orders.user_id";
$result = $conn->query($sql);
// রেকর্ড দেখানো
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "User ID: " . $row["id"] . " - Name: " . $row["name"] . " - Order ID: " . $row["order_id"] . " - Product: " . $row["product"] . "<br>";
}
} else {
echo "No results found";
}
$conn->close();
?>
4. FULL JOIN
FULL JOIN (বা FULL OUTER JOIN) ব্যবহৃত হলে, উভয় টেবিলের সমস্ত রেকর্ড রিটার্ন করা হয়। যদি একটি টেবিলের সাথে অন্য টেবিলের কোন সম্পর্ক না থাকে, তবে NULL মান রিটার্ন হয়। তবে, MySQL-এ FULL OUTER JOIN সরাসরি সাপোর্ট করা হয় না। তবে, এটি UNION অপারেটর দিয়ে অর্জন করা যায়, যেখানে LEFT JOIN এবং RIGHT JOIN এর সমন্বয় করা হয়।
4.1 FULL JOIN এর ব্যবহার
SELECT users.id, users.name, orders.order_id, orders.product
FROM users
LEFT JOIN orders ON users.id = orders.user_id
UNION
SELECT users.id, users.name, orders.order_id, orders.product
FROM users
RIGHT JOIN orders ON users.id = orders.user_id;
PHP কোডে FULL JOIN ব্যবহার:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// ডাটাবেস সংযোগ
$conn = new mysqli($servername, $username, $password, $dbname);
// সংযোগ চেক করা
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// FULL JOIN কোয়েরি (LEFT JOIN + RIGHT JOIN)
$sql = "SELECT users.id, users.name, orders.order_id, orders.product
FROM users
LEFT JOIN orders ON users.id = orders.user_id
UNION
SELECT users.id, users.name, orders.order_id, orders.product
FROM users
RIGHT JOIN orders ON users.id = orders.user_id";
$result = $conn->query($sql);
// রেকর্ড দেখানো
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "User ID: " . $row["id"] . " - Name: " . $row["name"] . " - Order ID: " . $row["order_id"] . " - Product: " . $row["product"] . "<br>";
}
} else {
echo "No results found";
}
$conn->close();
?>
5. JOIN ব্যবহার করার সময় কিছু গুরুত্বপূর্ণ বিষয়
- INNER JOIN-এ শুধুমাত্র সেই রেকর্ডগুলো রিটার্ন হয় যেগুলো উভয় টেবিলে রয়েছে।
- LEFT JOIN-এ বাম টেবিলের সমস্ত রেকর্ড এবং ডান টেবিলের মেলানো রেকর্ড রিটার্ন হয়।
- RIGHT JOIN-এ ডান টেবিলের সমস্ত রেকর্ড এবং বাম টেবিলের মেলানো রেকর্ড রিটার্ন হয়।
- FULL JOIN-এ উভয় টেবিলের সমস্ত রেকর্ড রিটার্ন হয়, যদিও MySQL সরাসরি FULL JOIN সাপোর্ট করে না, তবে UNION অপারেটর দিয়ে এটি সিমুলেট করা সম্ভব।
সারাংশ
PHP এবং MySQL-এ JOIN এর বিভিন্ন ধরনের ব্যবহার ডাটাবেসের টেবিলগুলোর মধ্যে সম্পর্ক স্থাপন এবং একত্রিত ডাটা রিট্রিভ করার জন্য গুরুত্বপূর্ণ। INNER JOIN, LEFT JOIN, RIGHT JOIN, এবং FULL JOIN ব্যবহার করে আপনি বিভিন্ন ধরনের ডাটা একত্রিত করতে পারেন, তবে প্রতিটি JOIN-এর ব্যবহার ক্ষেত্র আলাদা। MySQL-এ FULL JOIN সরাসরি সাপোর্ট না করলেও, LEFT JOIN এবং RIGHT JOIN ব্যবহার করে তা সিমুলেট করা যায়।V
Read more